package com.cbd.desensitization;

import com.cbd.util.DesensitizationTypeEnum;
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Author: CBD
 * @Date: 2024/11/5 19:08
 * @Description:desensitization注解
 */
@Target(ElementType.FIELD)// 注解作用于字段类成员变量
@Retention(RetentionPolicy.RUNTIME)// 注解在运行时有效可以反射获取
@JacksonAnnotationsInside// 注解在jackson序列化时生效
@JsonSerialize(using = DesensitizationSerialize.class)//用于控制Java对象到JSON的序列化过程
public @interface Desensitization {
    /**
     * 脱敏数据类型，在MY_RULE的时候，startInclude和endExclude生效
     */
    DesensitizationTypeEnum type() default DesensitizationTypeEnum.MY_RULE;

    /**
     * 脱敏开始位置（包含）
     */
    int startInclude() default 0;

    /**
     * 脱敏结束位置（不包含）
     */
    int endExclude() default 0;
}
